package com.controladores.controlvehicular;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

import com.controladores.controlvehicular.R;
import com.controladores.controlvehicular.basededatos.GestorBaseDatos;

import android.util.Log;
import android.view.KeyEvent;
import android.view.Window;
import android.widget.TextView;
import android.widget.Toast;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Environment;

public class Main extends Activity {
	// private int puerto = 0;
	// private String ip = "";
	private long ms = 0;
	private long splashTime = 2000;
	private boolean splashActive = true;
	private boolean paused = false;
	public static Activity aSplash;
	protected TextView fuenteIU;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		fuenteIU = (TextView) findViewById(R.id.tvNomProgramaS);
		Typeface tipofuente = Typeface.createFromAsset(getAssets(),
				"gloriahallelujah.ttf");
		fuenteIU.setTypeface(tipofuente);
		GestorBaseDatos crear = new GestorBaseDatos(Main.this);

		try {
			crear.crearDataBase();
			//crear.abrirBaseDatos();
			//crear.eliminarIp();
			//crear.eliminarPuerto();
			crear.close();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		File root = Environment.getExternalStorageDirectory();
		File dir = new File(root + "/Android/data");
		File datafile = new File(dir, "configTCP.txt");
		if (datafile.exists()) {
			// Si ya existe no hacemos nada
			System.out.println("fichero ya existe");
			try {
				crear.abrirBaseDatos();
				crear.eliminarIp();
				crear.eliminarPuerto();
				crear.close();
			} catch (Exception ex) {
				// TODO Auto-generated catch block
				ex.printStackTrace();
			}
			
			try
			{
			    //File ruta_sd = Environment.getExternalStorageDirectory();
			 
			    File f = new File(dir.getAbsolutePath(), "configTCP.txt");
			 
			    BufferedReader fin =
			        new BufferedReader(
			            new InputStreamReader(
			                new FileInputStream(f)));
			 
			    String texto = fin.readLine();
			    fin.close();
			    String [] datosConexion=descomposeT(texto, ":");
				String ip =datosConexion[0];
				String port =datosConexion[1];
				int puerto=Integer.parseInt(port);
				try {
					guardarConexion(ip,puerto);	
				} catch (Exception e) {
					// TODO: handle exception
					System.out.println("error conexión ingreso");
				}
				
			    System.out.println("texto encontrado "+texto);
			}
			catch (Exception ex)
			{
			    Log.e("Ficheros", "Error al leer fichero desde tarjeta SD");
			}
			
			/*String readString="";
			try {
				FileInputStream fileIN = new FileInputStream(datafile);
				BufferedReader buffer = new BufferedReader(
						new InputStreamReader(fileIN));
				readString = new String();
				while ((readString = buffer.readLine()) != null) {
					//Log.v(getClass().getName() + "Linea: ", readString);
					//Toast.makeText(getApplicationContext(),
					//		"string " + readString, Toast.LENGTH_LONG).show();
					System.out.println("si esta leyendo"+readString);
				}
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			System.out.println("imprimir cadena"+readString);
			String [] datosConexion=descomposeT(readString, ":");
			String ip =datosConexion[0];
			String port =datosConexion[0];
			int puerto=Integer.parseInt(port);
			//guardarConexion(ip,puerto);*/

		} else {
			// Si no existe, creamos una nueva Base de datos en la carpeta por
			// defecto de nuestra aplicacion,
			// de esta forma el Sistema nos permitira sobreescribirla con la que
			// tenemos en la carpeta Assets
			//boolean sdDisponible = false;
			//boolean sdAccesoEscritura = false;

			// Comprobamos el estado de la memoria externa (tarjeta SD)
			// String estado = Environment.getExternalStorageState();

			// if (estado.equals(Environment.MEDIA_MOUNTED)) {
			// sdDisponible = true;
			// sdAccesoEscritura = true;
			// } else if (estado.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) {
			// sdDisponible = true;
			// sdAccesoEscritura = false;
			// } else {
			//sdDisponible = false;
			//sdAccesoEscritura = false;
			// }

			// Si la memoria externa est?? disponible y se puede escribir
			// if (sdDisponible && sdAccesoEscritura) {
			try {
				// directory = new File(sdCard.getAbsolutePath()
				// + "/Mis archivos");
				// directory.mkdirs();
				//try {
					if (root.canWrite()) {
						System.out.println(" despues escritura");
						
						FileWriter datawriter = new FileWriter(datafile);
						BufferedWriter out = new  BufferedWriter(datawriter);
						String ip= "192.168.1.2";
						String port="3038";
						out.write(ip+":"+port);
						out.close();
						int puerto=Integer.parseInt(port);
						try {
							guardarConexion(ip,puerto);
						} catch (Exception e2) {
							// TODO: handle exception
							System.out.println("error conexión ingreso");
						}
				}
				//} catch (Exception e) {
					// TODO: handle exception
				//	System.out.println("error escritura");
				//}
				/*	System.out.println(" despues scritura");
				
				try {
					FileInputStream fileIN = new FileInputStream(datafile);
					BufferedReader buffer = new BufferedReader(
							new InputStreamReader(fileIN));
					String readString = new String();
					while ((readString = buffer.readLine()) != null) {
						//Log.v(getClass().getName() + "Linea: ", readString);
						//Toast.makeText(getApplicationContext(),
						//		"string " + readString, Toast.LENGTH_LONG).show();
						System.out.println("si esta leyendo"+readString);
						System.out.println("imprimir cadena"+readString);
						String [] datosConexion=descomposeT(readString, ":");
						String ip =datosConexion[0];
						String port =datosConexion[1];
						int puerto=Integer.parseInt(port);
						guardarConexion(ip,puerto);
						
					}
					buffer.close();
				} catch (FileNotFoundException e) {
					//System.out.println("error"+readString);
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}
				*/
			} catch (Exception ex) {
				Log.e("Ficheros", "Error al escribir fichero a tarjeta SD" + ex);
				//Toast.makeText(getBaseContext(), "fiche " + ex,
				//		Toast.LENGTH_LONG).show();

			}
		}
		Thread mythread = new Thread() {
			public void run() {
				try {
					while (splashActive && ms < splashTime) {
						if (!paused)
							ms = ms + 100;
						sleep(100);
					}
				} catch (Exception e) {
				} finally {
					Intent intent = new Intent(Main.this, InicioSesion.class);
					startActivity(intent);
				}
			}
		};
		mythread.start();
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		try {
			if (keyCode == KeyEvent.KEYCODE_BACK) {
				moveTaskToBack(true);
				return true;
			}

		} catch (Exception e) {
			// TODO: handle exception
			Toast.makeText(getBaseContext(), "Error al ir Atrás" + e,
					Toast.LENGTH_LONG).show();
		}
		return super.onKeyDown(keyCode, event);
	}
	public String[] descomposeT(String trama, String separador) {
		String[] elementos = trama.split(separador);
		return elementos;
	}
	public String recibirDatosConexion(File data){
		String readString="";
		try {
			FileInputStream fileIN = new FileInputStream(data);
			BufferedReader buffer = new BufferedReader(
					new InputStreamReader(fileIN));
			readString = new String();
			while ((readString = buffer.readLine()) != null) {
				Log.v(getClass().getName() + "Linea: ", readString);
				Toast.makeText(getApplicationContext(),
						"string " + readString, Toast.LENGTH_LONG).show();
			}
			buffer.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return readString;
	}
	public void guardarConexion(String ip, int puerto){
		GestorBaseDatos manejador = new GestorBaseDatos(
				Main.this);
		boolean bienHecho2 = false;
		try {
			
			manejador.abrirBaseDatos();
			bienHecho2 = manejador.insertarIPPUERTO(ip, puerto);
			manejador.close();
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("se se guardo");

		}
		if (!bienHecho2) {
			System.out.println("La Datos no fueron Cargados de IP y PUERTO");
			
		}
		if (bienHecho2) {
			System.out.println("La Datos fueron Cargados de IP y PUERTO");
		}
		
	}

	// @Override
	// protected void onPause() {
	// TODO Auto-generated method stub
	// super.onPause();
	// finish();
	// }
}
